package de.projectgoodmorning.alarm.model.gateway;

import android.content.Context;
import android.graphics.Color;
import android.util.Log;
import de.projectgoodmorning.alarm.GatewayConnection;
import de.projectgoodmorning.alarm.model.generic.Alarm;
import de.projectgoodmorning.alarm.model.generic.AlarmCallback;

/**
 * Der GatewayAlarm ist ein Alarm, welcher die Kommandos des Gateways kennt.
 * Ein GatewayAlarm hat genau einen Typ, welcher dem Kommando entspricht.
 *
 * Bei der Ausfuehrung eines GatewayAlarms wird entsprechend des Typs, dass
 * Kommando an das Gateway versendet.
 */
public class GatewayAlarm extends Alarm {
	private static final long serialVersionUID = 1L;
	
	/**
	 * gibt die eingestellte Farbe fuer die Lichterkette an
	 */
	public int color;
	
	/** 
	 * Anzahl der Sekunden zum Hauptalarm. 
	 * Ein Minus-Werte heisst, dass der Alarm VORHER erfolgt
	 */
	public int seconds;
	
	/**
	 * erstellt ein neues GatewayAlarm-Objekt.
	 * Der Type eines Alarms kann spaeter nicht mehr veraendert werden.
	 * 
	 * @param seconds	erwartet die Anzahl der Sekunden (Minus-Werte -> Alarm vorher)
	 * @param color		erwartet einen gueltigen Kommand-Typ, z.B. GatewayCommand.BLUE
	 * 					
	 * @see GatewayConnection#BLUE
	 */
	public GatewayAlarm( int seconds, final int color ) {
		super( 0, null );
		this.callback = new AlarmCallback() {
			@Override
			public void callback( Object obj ) {
				if( obj instanceof Context ) {
					Context ctx = ( Context ) obj;
					GatewayConnection.send( ctx, Color.red( color ), 
							Color.green( color ), Color.blue( color ) );
					
					Log.d( "GatewayAlarm", "Executed: " + color );
				}
				
			}
		};
		
		this.color = color;
		this.seconds = seconds;
	}
}
